ã¢ãŒãã«ãŠã£ã³ããŠãšéã¢ãŒãã«ãŠã£ã³ããŠã®ã¢ã¯ã»ã·ããªãã£ã«çŠç¹ãåœãŠããå æ¬çãªãã€ã¢ãã°ç®¡çã®ã¬ã€ããäžçäžã§å æ¬çãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãä¿èšŒããŸãã
ãã€ã¢ãã°ç®¡çïŒã¢ãŒãã«ãŠã£ã³ããŠãšéã¢ãŒãã«ãŠã£ã³ããŠã®ã¢ã¯ã»ã·ããªãã£ã®ç¢ºä¿
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒUIïŒãã¶ã€ã³ã®åéã§ã¯ããã€ã¢ãã°ã¯ãŠãŒã¶ãŒãšã®å¯Ÿè©±ãæ å ±æäŸããŸãã¯å ¥åãèŠæ±ããäžã§éèŠãªåœ¹å²ãæãããŸãããããã®ãã€ã¢ãã°ã¯ãã¢ãŒãã«ãŠã£ã³ããŠãŸãã¯éã¢ãŒãã«ãŠã£ã³ããŠãšããŠçŸããå¯èœæ§ããããããããã«ç¬èªã®ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé ããããŸãããã®ã¬ã€ãã§ã¯ããã€ã¢ãã°ç®¡çã®è€éããæãäžããWeb Content Accessibility GuidelinesïŒWCAGïŒã®ãããªç¢ºç«ãããæšæºã®éµå®ãšãAccessible Rich Internet ApplicationsïŒARIAïŒå±æ§ã®å©çšãéããŠãèœåã«é¢ä¿ãªãããã¹ãŠã®ãŠãŒã¶ãŒã«å¯Ÿããã¢ã¯ã»ã·ããªãã£ã®ç¢ºä¿ã«çŠç¹ãåœãŠãŠããŸãã
ã¢ãŒãã«ãã€ã¢ãã°ãšéã¢ãŒãã«ãã€ã¢ãã°ã®çè§£
ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé ã«å ¥ãåã«ãã¢ãŒãã«ãã€ã¢ãã°ãšéã¢ãŒãã«ãã€ã¢ãã°ãäœãæå³ããã®ããå®çŸ©ããããšãéèŠã§ãã
- ã¢ãŒãã«ãã€ã¢ãã°ïŒã¢ãŒãã«ãŠã£ã³ããŠãšããŠãç¥ãããã¢ãŒãã«ãã€ã¢ãã°ã¯ãã¡ã€ã³ãŠã£ã³ããŠãç¡å¹ã«ããã¢ãŒããäœæããUIèŠçŽ ã§ãããåãŠã£ã³ããŠãšããŠã¢ãŒãã«ãŠã£ã³ããŠã衚瀺ãããŸãŸã«ããŸãããŠãŒã¶ãŒã¯ã¢ãŒãã«ãã€ã¢ãã°ãæäœããéåžžã¯ïŒç¢ºèªãã¿ã³ãŸãã¯ãXãã¢ã€ã³ã³ãã¯ãªãã¯ãããªã©ããŠïŒéããŠãããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠã«æ»ãããšãã§ããŸããäžè¬çãªäŸãšããŠã¯ãã¢ã©ãŒãããã¯ã¹ã確èªããã³ãããèšå®ããã«ãªã©ããããŸãã
- éã¢ãŒãã«ãã€ã¢ãã°ïŒå¯Ÿç §çã«ãéã¢ãŒãã«ãã€ã¢ãã°ã§ã¯ããŠãŒã¶ãŒã¯ãã€ã¢ãã°ãšã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠã®äž¡æ¹ãåæã«æäœã§ããŸãããã€ã¢ãã°ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåãžã®ã¢ã¯ã»ã¹ããããã¯ããã«éãããŸãŸã«ãªããŸããäŸãšããŠã¯ãã°ã©ãã£ãã¯ç·šéãœãããŠã§ã¢ã®ããŒã«ãã¬ããããã¡ãã»ãŒãžã³ã°ã¢ããªã±ãŒã·ã§ã³ã®ãã£ãããŠã£ã³ããŠãªã©ããããŸãã
ãã€ã¢ãã°ã®ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé
ã¢ã¯ã»ã·ããªãã£ã¯UIãã¶ã€ã³ã«ãããŠæãéèŠã§ãããã€ã¢ãã°ãã¢ã¯ã»ã¹å¯èœã§ããããšãä¿èšŒãããšããããšã¯ãé害ã®ãããŠãŒã¶ãŒãå«ããã¹ãŠã®ãŠãŒã¶ãŒã广çã«ãããã䜿çšã§ããããšãæå³ããŸããããã«ã¯ã以äžãå«ãããŸããŸãªèæ ®äºé ã«å¯ŸåŠããããšãå«ãŸããŸãã
- ããŒããŒãããã²ãŒã·ã§ã³ïŒããŒããŒãããã²ãŒã·ã§ã³ã«äŸåãããŠãŒã¶ãŒã¯ããã€ã¢ãã°ã«ç°¡åã«ç§»åãããã€ã¢ãã°å ãç§»åãããã€ã¢ãã°ããç§»åã§ããå¿ èŠããããŸãã
- ã¹ã¯ãªãŒã³ãªãŒããŒã®äºææ§ïŒã¹ã¯ãªãŒã³ãªãŒããŒã¯ããã€ã¢ãã°ã®ç®çãšå 容ãããã³ãã®äžã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ãæ£ç¢ºã«ã¢ããŠã³ã¹ããå¿ èŠããããŸãã
- ãã©ãŒã«ã¹ã®ç®¡çïŒé©åãªãã©ãŒã«ã¹ç®¡çã«ããããã€ã¢ãã°ãéãããšãããã€ã¢ãã°å ãç§»åãããšãããã€ã¢ãã°ãéãããšãã«ããšã®èŠçŽ ã«æ»ããšãã«ãããŒããŒããã©ãŒã«ã¹ãé©åã«é 眮ãããããã«ãªããŸãã
- èŠèŠçãªæçãïŒãã€ã¢ãã°ã¯ãããã¹ããšèæ¯è²ã®éã«ååãªã³ã³ãã©ã¹ãããããèŠèŠçãªã¬ã€ã¢ãŠãã¯æç¢ºã§çè§£ããããå¿ èŠããããŸãã
- ã¿ããã¿ãŒã²ããã®ãµã€ãºïŒã¿ããããŒã¹ã®ã€ã³ã¿ãŒãã§ãŒã¹ã®å Žåããã€ã¢ãã°å ã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã«ã¯ãé©åã«ãµã€ãºèšå®ãããã¿ããã¿ãŒã²ãããå¿ èŠã§ãã
- èªç¥ã¢ã¯ã»ã·ããªãã£ïŒãã€ã¢ãã°å ã®èšèªãšã³ã³ãã³ãã¯ãæç¢ºãç°¡æœãçè§£ãããããã®ã§ãããèªç¥è² è·ãæå°éã«æããå¿ èŠããããŸãã
ãã€ã¢ãã°ã®ã¢ã¯ã»ã·ããªãã£ã®ããã®ARIA屿§
ARIAïŒAccessible Rich Internet ApplicationsïŒå±æ§ã¯ãã¹ã¯ãªãŒã³ãªãŒããŒãªã©ã®æ¯æŽæè¡ã«ã»ãã³ãã£ãã¯æ å ±ãæäŸããUIèŠçŽ ãããæ£ç¢ºã«è§£éããŠæç€ºã§ããããã«ããŸãããã€ã¢ãã°ã®ã¢ã¯ã»ã·ããªãã£ã®ããã®äž»èŠãªARIA屿§ã¯æ¬¡ã®ãšããã§ãã
- `role="dialog"` ãŸã㯠`role="alertdialog"`ïŒãã®å±æ§ã¯ãèŠçŽ ããã€ã¢ãã°ãšããŠèå¥ããŸãã `alertdialog` ã¯ãéèŠãŸãã¯ç·æ¥ã®æ å ±ãäŒéãããã€ã¢ãã°ã«äœ¿çšããå¿ èŠããããŸãã
- `aria-labelledby="[èŠåºãã®ID]"`ïŒãã®å±æ§ã¯ããã€ã¢ãã°ããã®ç®çã説æããèŠåºãèŠçŽ ã«é¢é£ä»ããŸãã
- `aria-describedby="[説æã®ID]"`ïŒãã®å±æ§ã¯ããã€ã¢ãã°ã远å ã®ã³ã³ããã¹ããŸãã¯æç€ºãæäŸãã説æèŠçŽ ã«é¢é£ä»ããŸãã
- `aria-modal="true"`ïŒãã®å±æ§ã¯ããã€ã¢ãã°ãã¢ãŒãã«ã§ããããšã瀺ãããã€ã¢ãã°å€ã®èŠçŽ ãšã®å¯Ÿè©±ãçŠæ¢ããŸããããã¯ãã¢ãŒãã«ãªåäœãæ¯æŽæè¡ã«äŒããããã«éèŠã§ãã
- `tabindex="0"`ïŒãã€ã¢ãã°å ã®èŠçŽ ã« `tabindex="0"` ãèšå®ãããšãããŒããŒãããã²ãŒã·ã§ã³ã§ãã©ãŒã«ã¹ãåãåãããšãã§ããŸãã
ã¢ãŒãã«ãã€ã¢ãã°ã®ã¢ã¯ã»ã·ããªãã£ïŒãã¹ããã©ã¯ãã£ã¹
ã¢ãŒãã«ãã€ã¢ãã°ã¯ããã®ããããã³ã°ã®æ§è³ªã®ããã«ãç¬èªã®ã¢ã¯ã»ã·ããªãã£ã®èª²é¡ãæ±ããŠããŸããã¢ãŒãã«ãã€ã¢ãã°ã®ã¢ã¯ã»ã·ããªãã£ã確ä¿ããããã®ãã¹ããã©ã¯ãã£ã¹ã次ã«ç€ºããŸãã
1. é©åãªARIA屿§
åè¿°ã®ããã«ã`role="dialog"`ïŒãŸãã¯ç·æ¥ã¡ãã»ãŒãžã®å Žå㯠`role="alertdialog"`ïŒã`aria-labelledby`ã`aria-describedby`ã`aria-modal="true"` ã䜿çšããããšã¯ããã€ã¢ãã°ãšãã®ç®çãæ¯æŽæè¡ã«èå¥ããããã«éèŠã§ãã
äŸïŒ
<div role="dialog" aria-labelledby="confirmation-heading" aria-modal="true">
<h2 id="confirmation-heading">åé€ã®ç¢ºèª</h2>
<p>ãã®ã¢ã€ãã ãåé€ããŠãããããã§ããïŒãã®ã¢ã¯ã·ã§ã³ã¯å
ã«æ»ããŸããã</p>
<button>確èª</button>
<button>ãã£ã³ã»ã«</button>
</div>
2. ãã©ãŒã«ã¹ã®ç®¡ç
ã¢ãŒãã«ãã€ã¢ãã°ãéããšãããŒããŒããã©ãŒã«ã¹ã¯ããã€ã¢ãã°å ã®æåã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ïŒæåã®ãã¿ã³ãŸãã¯å ¥åãã£ãŒã«ããªã©ïŒã«ããã«ç§»åããå¿ èŠããããŸãããã€ã¢ãã°ãéãããšããã©ãŒã«ã¹ã¯ãã€ã¢ãã°ãããªã¬ãŒããèŠçŽ ã«æ»ãå¿ èŠããããŸãã
å®è£ ã«é¢ããèæ ®äºé ïŒ
- JavaScriptïŒJavaScriptã䜿çšããŠããã€ã¢ãã°ãééãããšãã«ãã©ãŒã«ã¹ãé©åãªèŠçŽ ã«ããã°ã©ã ã§èšå®ããŸãã
- ãã©ãŒã«ã¹ãã©ããïŒãã©ãŒã«ã¹ãã©ãããå®è£ ããŠãããŒããŒããã©ãŒã«ã¹ãéããŠããéã¯ãã€ã¢ãã°å ã«ãšã©ãŸãããã«ããŸããããã«ããããŠãŒã¶ãŒã誀ã£ãŠãã€ã¢ãã°ããã¿ãã¢ãŠãããŠå Žæã倱ãã®ãé²ããŸããããã¯ãJavaScriptã䜿çšããŠã¿ãããŒã®æŒäžããªãã¹ã³ããå¿ èŠã«å¿ããŠãã©ãŒã«ã¹ããã€ã¢ãã°ã®æåãŸãã¯æåŸã«åŸªç°ãããããšã«ãã£ãŠå®çŸãããããšããããããŸãã
äŸïŒæŠå¿µçãªJavaScriptïŒïŒ
function openModal(modalId) {
const modal = document.getElementById(modalId);
modal.style.display = "block";
const firstFocusableElement = modal.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
firstFocusableElement.focus();
}
function closeModal(modalId, triggeringElementId) {
const modal = document.getElementById(modalId);
modal.style.display = "none";
const triggeringElement = document.getElementById(triggeringElementId);
triggeringElement.focus();
}
3. ããŒããŒãã¢ã¯ã»ã·ããªãã£
ãã€ã¢ãã°å ã®ãã¹ãŠã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ããããŒããŒãã䜿çšããŠã¢ã¯ã»ã¹ããã³ã¢ã¯ãã£ãåã§ããããšã確èªããŸããããã«ã¯ããã¿ã³ããªã³ã¯ããã©ãŒã ãã£ãŒã«ããããã³ã«ã¹ã¿ã ã³ã³ãããŒã«ãå«ãŸããŸãã
èæ ®äºé ïŒ
- ã¿ããªãŒããŒïŒã¿ããªãŒããŒã¯ãè«ççã§çŽæçã§ããå¿ èŠããããŸããäžè¬çã«ãã¿ããªãŒããŒã¯ãã€ã¢ãã°ã®èŠèŠçãªã¬ã€ã¢ãŠãã«åŸãå¿ èŠããããŸãã
- ããŒããŒãã·ã§ãŒãã«ããïŒãã€ã¢ãã°å ã®äžè¬çãªã¢ã¯ã·ã§ã³ã®ããŒããŒãã·ã§ãŒãã«ãããæäŸããŸãïŒããšãã°ãEscapeããŒã䜿çšããŠãã€ã¢ãã°ãéããããEnterããŒã䜿çšããŠã¢ã¯ã·ã§ã³ã確èªããŸãïŒã
4. èŠèŠçãªãã¶ã€ã³
ã¢ãŒãã«ãã€ã¢ãã°ã®èŠèŠçãªãã¶ã€ã³ã¯ããããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠãšã¯å¥ã®ãã®ã§ããããšãæç¢ºã«ç€ºãå¿ èŠããããŸããããã¯ãã³ã³ãã©ã¹ãã®ããèæ¯è²ãæç¢ºãªå¢çç·ããŸãã¯åœ±ã®å¹æã䜿çšããããšã§å®çŸã§ããŸããããã¹ããšèæ¯ã®éã«ååãªè²ã®ã³ã³ãã©ã¹ãã確ä¿ããŠãèªã¿ãããããŸãã
5. ã»ãã³ãã£ãã¯HTML
å¯èœãªéããã»ãã³ãã£ãã¯HTMLèŠçŽ ã䜿çšããŸããããšãã°ããã¿ã³ã«ã¯<button>èŠçŽ ããã©ãŒã å ¥åã®ã©ãã«ä»ãã«ã¯<label>èŠçŽ ãèŠåºãã«ã¯<h2>ãŸãã¯<h3>èŠçŽ ã䜿çšããŸãã
6. åœéåãšããŒã«ãªãŒãŒã·ã§ã³
ãã€ã¢ãã°ãèšèšããã³å®è£ ããéã«ã¯ãããŸããŸãªæåçèæ¯ãæã€ãŠãŒã¶ãŒã®ããŒãºãèæ ®ããŠãã ãããããã«ã¯ããã€ã¢ãã°ã³ã³ãã³ãã®ããŒã«ã©ã€ãºãããããŒãžã§ã³ã®æäŸãããã€ã¢ãã°ã¬ã€ã¢ãŠããããŸããŸãªããã¹ãæ¹åïŒå³ããå·Šã®èšèªãªã©ïŒã«é©åã«å¯Ÿå¿ããããšã®ç¢ºèªãå«ãŸããŸãã
äŸïŒãŠãŒã¶ãŒã«ã¢ã«ãŠã³ãã®åé€ãæ±ãã確èªãã€ã¢ãã°ã¯ãåã¿ãŒã²ããèšèªã«å¯ŸããŠæ£ç¢ºãã€æåçã«é©åã«ç¿»èš³ãããå¿ èŠããããŸããã¬ã€ã¢ãŠãã¯ãå³ããå·Šã®èšèªã«åãããŠèª¿æŽããå¿ èŠãããå ŽåããããŸãã
éã¢ãŒãã«ãã€ã¢ãã°ã®ã¢ã¯ã»ã·ããªãã£ïŒãã¹ããã©ã¯ãã£ã¹
éã¢ãŒãã«ãã€ã¢ãã°ã¯ãã¢ãŒãã«ãã€ã¢ãã°ã»ã©ç Žå£çã§ã¯ãããŸããããããã§ãã¢ã¯ã»ã·ããªãã£ã«æ³šæãæãå¿ èŠããããŸãããã¹ããã©ã¯ãã£ã¹ã次ã«ç€ºããŸãã
1. æç¢ºãªèŠèŠçåºå¥
æ··ä¹±ãé¿ããããã«ãéã¢ãŒãã«ãã€ã¢ãã°ãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠãšã¯èŠèŠçã«åºå¥ãããããã«ããŸããããã¯ãå¢çç·ãèæ¯è²ããŸãã¯åŸ®åŠãªåœ±ã䜿çšããããšã§å®çŸã§ããŸãã
2. ãã©ãŒã«ã¹ã®ç®¡ç
éã¢ãŒãã«ãã€ã¢ãã°ã¯ã¡ã€ã³ãŠã£ã³ããŠãšã®å¯Ÿè©±ããããã¯ããŸããããé©åãªãã©ãŒã«ã¹ç®¡çã¯äŸç¶ãšããŠéèŠã§ãããã€ã¢ãã°ãéããšããã©ãŒã«ã¹ã¯ãã€ã¢ãã°å ã®æåã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã«ç§»åããå¿ èŠããããŸãããŠãŒã¶ãŒã¯ãããŒããŒãããã²ãŒã·ã§ã³ã䜿çšããŠããã€ã¢ãã°ãšã¡ã€ã³ãŠã£ã³ããŠãç°¡åã«åãæ¿ããããšãã§ããå¿ èŠããããŸãã
3. ARIA屿§
`role="dialog"`ã`aria-labelledby`ãããã³ `aria-describedby` ã䜿çšããŠããã€ã¢ãã°ã«é¢ããã»ãã³ãã£ãã¯æ å ±ãæ¯æŽæè¡ã«æäŸããŸãã `aria-modal="false"` ãŸã㯠`aria-modal` ãçç¥ããããšã¯ãéã¢ãŒãã«ãã€ã¢ãã°ãã¢ãŒãã«ãã€ã¢ãã°ãšåºå¥ããããã«éèŠã§ãã
äŸïŒ
<div role="dialog" aria-labelledby="font-settings-heading">
<h2 id="font-settings-heading">ãã©ã³ãèšå®</h2>
<label for="font-size">ãã©ã³ããµã€ãºïŒ</label>
<input type="number" id="font-size" value="12">
<button>é©çš</button>
</div>
4. ããŒããŒãã¢ã¯ã»ã·ããªãã£
ãã€ã¢ãã°å ã®ãã¹ãŠã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ããããŒããŒãã䜿çšããŠã¢ã¯ã»ã¹ããã³ã¢ã¯ãã£ãåã§ããããšã確èªããŸããã¿ããªãŒããŒã¯è«ççã§çŽæçã§ããå¿ èŠãããããŠãŒã¶ãŒã¯ãã€ã¢ãã°ãšã¡ã€ã³ãŠã£ã³ããŠãç°¡åã«ç§»åã§ããããã«ãªããŸãã
5. ãªãŒããŒã©ããã®åé¿
ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠã®éèŠãªã³ã³ãã³ããé ããããªæ¹æ³ã§ãéã¢ãŒãã«ãã€ã¢ãã°ãé 眮ããããšã¯é¿ããŠãã ããããã€ã¢ãã°ã¯ãæç¢ºã§ã¢ã¯ã»ã¹å¯èœãªå Žæã«é 眮ããå¿ èŠããããŸãã
6. èªèãšã³ãã¥ãã±ãŒã·ã§ã³
éã¢ãŒãã«ãã€ã¢ãã°ãéããšãç¹ã«ããã¯ã°ã©ãŠã³ãã§éããããã«è¡šç€ºãããªãå¯èœæ§ãããå Žåã¯ãïŒARIAã©ã€ããªãŒãžã§ã³ã䜿çšããŠïŒæ°ãããã€ã¢ãã°ã衚瀺ãããããšãèŠèŠçãŸãã¯èŽèŠçã«ãŠãŒã¶ãŒã«ç¥ããããšåœ¹ç«ã¡ãŸãã
å®è·µçãªäŸãšã³ãŒãã¹ãããã
ãããã®æŠå¿µã説æããããã«ãããã€ãã®å®è·µçãªäŸãšã³ãŒãã¹ãããããèŠãŠã¿ãŸãããã
äŸ1ïŒã¢ãŒãã«ç¢ºèªãã€ã¢ãã°
<button id="delete-button" onclick="openModal('delete-confirmation-modal', 'delete-button')">ã¢ã€ãã ã®åé€</button>
<div id="delete-confirmation-modal" role="dialog" aria-labelledby="delete-heading" aria-modal="true" style="display:none;">
<h2 id="delete-heading">åé€ã®ç¢ºèª</h2>
<p>ãã®ã¢ã€ãã ãåé€ããŠãããããã§ããïŒãã®ã¢ã¯ã·ã§ã³ã¯å
ã«æ»ããŸããã</p>
<button onclick="//Delete item logic; closeModal('delete-confirmation-modal', 'delete-button')">確èª</button>
<button onclick="closeModal('delete-confirmation-modal', 'delete-button')">ãã£ã³ã»ã«</button>
</div>
äŸ2ïŒéã¢ãŒãã«ãã©ã³ãèšå®ãã€ã¢ãã°
<button id="font-settings-button" onclick="openModal('font-settings-dialog', 'font-settings-button')">ãã©ã³ãèšå®</button>
<div id="font-settings-dialog" role="dialog" aria-labelledby="font-settings-heading" style="display:none;">
<h2 id="font-settings-heading">ãã©ã³ãèšå®</h2>
<label for="font-size">ãã©ã³ããµã€ãºïŒ</label>
<input type="number" id="font-size" value="12"><br>
<label for="font-family">ãã©ã³ããã¡ããªãŒïŒ</label>
<select id="font-family">
<option value="Arial">Arial</option>
<option value="Verdana">Verdana</option>
<option value="Times New Roman">Times New Roman</option>
</select><br>
<button onclick="//Apply font settings logic">é©çš</button>
</div>
ãã¹ããšæ€èšŒ
ãã€ã¢ãã°ã®ã¢ã¯ã»ã·ããªãã£ã確ä¿ããã«ã¯ã培åºçãªãã¹ããäžå¯æ¬ ã§ããããã«ã¯ä»¥äžãå«ãŸããŸãã
- æåãã¹ãïŒããŒããŒããšã¹ã¯ãªãŒã³ãªãŒããŒã䜿çšããŠããã€ã¢ãã°ãããã²ãŒãããŠæäœããŸãã
- èªåãã¹ãïŒã¢ã¯ã»ã·ããªãã£ãã¹ãããŒã«ã䜿çšããŠãæœåšçãªã¢ã¯ã»ã·ããªãã£ã®åé¡ãç¹å®ããŸãã Axe DevToolsãWAVEãLighthouseãªã©ã®ããŒã«ã¯ãã¢ã¯ã»ã·ããªãã£ãã§ãã¯ã®èªååã«åœ¹ç«ã¡ãŸãã
- ãŠãŒã¶ãã¹ãïŒé害ã®ããå人ãšã®ãŠãŒã¶ãã¹ãã宿œããŠããã€ã¢ãã°ã®ãŠãŒã¶ããªãã£ãšã¢ã¯ã»ã·ããªãã£ã«é¢ãããã£ãŒãããã¯ãåéããŸãã
WCAGæºæ
ã¢ã¯ã»ã¹å¯èœãªãã€ã¢ãã°ãäœæããã«ã¯ãWeb Content Accessibility GuidelinesïŒWCAGïŒã«æºæ ããããšãéèŠã§ããé¢é£ããWCAGã®éæåºæºã«ã¯ä»¥äžãå«ãŸããŸãã
- 1.1.1 éããã¹ãã³ã³ãã³ãïŒéããã¹ãã³ã³ãã³ãïŒç»åãã¢ã€ã³ã³ãªã©ïŒã®ããã¹ãã«ãã代æ¿ãæäŸããŸãã
- 1.3.1 æ å ±ãšé¢ä¿æ§ïŒæ å ±ãšé¢ä¿æ§ãããŒã¯ã¢ãããŸãã¯ããŒã¿å±æ§ãéããŠäŒéãããããã«ããŸãã
- 1.4.3 ã³ã³ãã©ã¹ãïŒæå°ïŒïŒããã¹ããšèæ¯è²ã®éã«ååãªã³ã³ãã©ã¹ããããããšã確èªããŸãã
- 2.1.1 ããŒããŒãïŒãã¹ãŠã®æ©èœãããŒããŒãããå©çšã§ããããã«ããŸãã
- 2.4.3 ãã©ãŒã«ã¹é åºïŒãã©ãŒã«ã¹é åºãè«ççã§çŽæçã§ããããšã確èªããŸãã
- 2.4.7 ãã©ãŒã«ã¹ã®å¯èŠåïŒãã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ãŒãåžžã«è¡šç€ºãããŠããããšã確èªããŸãã
- 3.2.1 ãã©ãŒã«ã¹æïŒã³ã³ããŒãã³ããäºæããã«ãã©ãŒã«ã¹ãåãåããªãããã«ããŸãã
- 4.1.2 ååã圹å²ãå€ïŒãã¹ãŠã®UIã³ã³ããŒãã³ãã®ååã圹å²ãå€ãæ¯æŽæè¡ãããã°ã©ã ã§æ±ºå®ã§ããããã«ããŸãã
ã°ããŒãã«ãªèæ ®äºé
ã°ããŒãã«ãªãŒãã£ãšã³ã¹åãã®ãã€ã¢ãã°ãèšèšããå Žåã¯ã以äžãèæ ®ããŠãã ããã
- ããŒã«ãªãŒãŒã·ã§ã³ïŒãã¹ãŠã®ããã¹ãã³ã³ãã³ããé©åãªèšèªã«ç¿»èš³ããŸãã
- åœéåïŒãã€ã¢ãã°ã¬ã€ã¢ãŠããããŸããŸãªããã¹ãæ¹åãæåçæ £ç¿ã«é©åã«å¯Ÿå¿ããããã«ããŸããæ¥ä»ãšæå»ã®åœ¢åŒãé貚èšå·ãããã³äœæåœ¢åŒã¯ãæåã«ãã£ãŠå€§ããç°ãªããŸãã
- æåçãªæåæ§ïŒç¹å®ã®æåã§ã¯æ»æçãŸãã¯äžé©åã§ããå¯èœæ§ã®ããç»åãŸãã¯èšå·ã®äœ¿çšã¯é¿ããŠãã ããã
äŸïŒæ¥æ¬ã§äœ¿çšããããã€ã¢ãã°ã¯ãç±³åœã§äœ¿çšããããã€ã¢ãã°ãšã¯ç°ãªãã瞊æžãã®ããã¹ãã¬ã€ã¢ãŠããšç°ãªãæ¥ä»åœ¢åŒã«å¯Ÿå¿ããå¿ èŠãããå ŽåããããŸãã
çµè«
ã¢ãŒãã«ãšéã¢ãŒãã«ã®äž¡æ¹ã®ã¢ã¯ã»ã¹å¯èœãªãã€ã¢ãã°ãäœæããããšã¯ãã€ã³ã¯ã«ãŒã·ããªUIãã¶ã€ã³ã®äžå¯æ¬ ãªåŽé¢ã§ãããã®ã¬ã€ãã§æŠèª¬ãããŠãããã¹ããã©ã¯ãã£ã¹ã«åŸããWCAGã¬ã€ãã©ã€ã³ãéµå®ããARIA屿§ã广çã«å©çšããããšã§ãéçºè ã¯ãèœåã«é¢ä¿ãªãããã¹ãŠã®ãŠãŒã¶ãŒãã·ãŒã ã¬ã¹ãã€å¹æçã«ãã€ã¢ãã°ãæäœã§ããããã«ããããšãã§ããŸããã¢ã¯ã»ã·ããªãã£ã¯åãªãã³ã³ãã©ã€ã¢ã³ã¹ã§ã¯ãªãããã¹ãŠã®äººã«ãšã£ãŠããå æ¬çã§å ¬å¹³ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäœæããããšã§ããããšãå¿ããªãã§ãã ãããé害ã®ãããŠãŒã¶ãŒããã®ç¶ç¶çãªãã¹ããšãã£ãŒãããã¯ã®åéã¯ãã¢ã¯ã»ã·ããªãã£ã®åé¡ãç¹å®ããŠå¯ŸåŠããå šäœçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã«éèŠã§ããã¢ã¯ã»ã·ããªãã£ãåªå ããããšã§ãæ©èœçã§èŠèŠçã«é åçãªã ãã§ãªããäžçäžã®ãã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠäœ¿ããããæ¥œãããã€ã¢ãã°ãäœæã§ããŸãã